package com.youlu.campus.service.invite;

import com.youlu.campus.entity.UserInviteRecord;
import com.youlu.campus.entity.enums.ShareType;

import java.util.List;

public interface UserInviteRecordService {


    List<UserInviteRecord> findByInvitedToUserId(String invitedToUserId, String activityId, String taskId);

    UserInviteRecord findByInvitedToUserId(String invitedToUserId, String activityId);

    /**
     * 根据受邀人id 活动ID 任务id 查询邀请信息 未答题未加入状态
     * ps、一个人只能被邀请一次
     *
     * @param invitedToUserId
     * @param activityId
     * @param taskId
     * @return
     */
    UserInviteRecord getByInvitedToUserId(String invitedToUserId, String activityId, String taskId);


    /**
     * 查询用户活动邀请的列表
     *
     * @param invitedByUserId
     * @param activityId
     * @param taskId
     * @return
     */
    List<UserInviteRecord> find(String invitedByUserId, String activityId, String taskId);

    /**
     * 查询用户的邀请数量
     *
     * @param userId
     * @param activityId
     * @param taskId
     * @param joinStatus
     * @return
     */
    Long getInviteUserCount(String userId, String activityId, String taskId, Boolean joinStatus);

    /**
     * 修改邀请记录状态
     *
     * @param invitedByUserId
     * @param invitedToUserId
     * @param activityId
     * @param taskId
     * @param joinStatus
     * @return
     */
    boolean updateUserInviteStatus(String invitedByUserId, String invitedToUserId, String activityId, String taskId, Boolean joinStatus);

    /**
     * 更新用户邀请记录
     *
     * @param id
     * @return
     */
    boolean updateUserInviteStatus(String id);

    /**
     * 更新被邀请人的状态
     *
     * @param invitedToUserId
     * @param activityId
     */
    void updateInvitedStatus(String invitedToUserId, String activityId);

    /**
     *  更新邀请人状态
     *
     * @param invitedToUserId
     * @param activityId
     * @return
     */
    boolean updateInvitedCount(String invitedToUserId, String activityId);

    /**
     * 查询被邀请人根据活动ID是否邀请成功
     * @return
     */
    UserInviteRecord invitedSuccessByInvitedToUserIdAndActivityId(String invitedToUserId, String activityId,String taskId);

    /**
     * 查询被邀请人根据活动ID是否邀请成功
     * @return
     */
    UserInviteRecord invitedSuccessByInvitedToUserIdAndActivityId(String invitedToUserId, String activityId);

    /**
     * 根据邀请人id 与 活动id  删除用户邀请记录
     * @param userId
     * @param activityId
     */
    void deleteByInvitedByUserIdAndActivityId(String userId, String activityId);
}
